
public class Servidor implements Sujeito{
    
    private java.util.ArrayList<Observer> observers;
    private java.util.ArrayList<Acao> acoes;
    
    public Servidor(){
        this.observers = new java.util.ArrayList<Observer>();
        this.acoes = new java.util.ArrayList<Acao>();
    }
    
    public Servidor(java.util.ArrayList<Observer> observers){
        this.observers = observers;
    }
    
    public boolean addAcao(Acao a){
        return this.acoes.add(a);
    }
    
    public boolean alteraAcao(Acao a){
        java.util.Iterator<Acao> it = this.acoes.iterator();
        while( it.hasNext() ){
            Acao b = (Acao) it.next();
            if ( b.getNome().equals(a.getNome())){
                b.setPreco(a.getPreco());
                this.notificar(b);
                return true;
            }
        }
        return false;
    }

    @Override
    public boolean agregar(Observer ob) {
        return this.observers.add(ob);
    }

    @Override
    public boolean desagregar(Observer ob) {
        return this.observers.remove(ob);
    }
    
    private void notificar(Acao b){
        for(Observer o: this.observers){
            o.update(b);
        }
        System.out.println("Alteracao de preço\n");
    }
    
}